package com.kazusa.myservlet;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/*
*               获取ServletContext对象
*               1.通过request获取
*               2.通过session对象获取
*               3.通过ServletConfig对象获取
*               4.直接获取
*               5.常用方法
*               6.获取当前服务器的版本信息
*               7.获取项目的真实路径
*
*
* */

/*Servlet的三大域对象
1. request域对象
在一次请求中有效。请求转发有效，重定向失效。
2. session域对象
在一次会话中有效。请求转发和重定向都有效，session销毁后失效。
3. servletContext域对象
在整个应用程序中有效。服务器关闭后失效。*/


@WebServlet("/servletContext")
public class Context extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通过request获取
        ServletContext context1=request.getServletContext();

        //通过session对象获取
        ServletContext context2=request.getSession().getServletContext();

        //通过ServletConfig对象获取
        ServletContext context3=getServletConfig().getServletContext();

        //直接获取
        ServletContext context4=getServletContext();

        //常用方法
        //获取当前服务器的版本信息
        String serveInfo=request.getServletContext().getServerInfo();
        System.out.println("服务器版本信息："+serveInfo);
        //获取项目的真实路径
        String realPath=request.getServletContext().getRealPath("/");
        System.out.println("项目的真实路径："+realPath);


    }
}



